<?php

require_once 'classDb.php';

class Usuario {

    public $db;
    public $USU_ID;
    public $EMP_ID;
    public $USU_USUARIO;
    public $USU_PASSWORD;
    public $USU_RUT;
    public $USU_DV;
    public $USU_NOMBRES;
    public $USU_AP_PATERNO;
    public $USU_AP_MATERNO;
    public $USU_REGION;
    public $USU_PROVINCIA;
    public $USU_COMUNA;
    public $USU_DIRECCION;
    public $USU_TELEFONO;
    public $USU_EMAIL;
    public $USU_FECHA_CREACION;
    public $USU_FECHA_MODIFICACION;
    public $USU_ESTADO;

    /**
     * 19.12.2013
     * METODO QUE VALIDA SI EL USUARIO QUE QUIERE CONECTARSE AL
     * SISTEMA ES VALIDO, COMPARANDO LAS CREDENCIALES DE ACCESO
     * REGISTRADAS EN EL SISTEMA 
     * @param type $user
     * @param type $clave
     * @return $ID_USUARIO
     */
    function login($user, $clave) {

        $this->db = DB::getInstance();

        $this->USU_USUARIO = $user;
        $this->USU_CLAVE = md5($clave);

        $this->db->sql = "SELECT A.USU_ID, 
                        B.USU_ID 
                 FROM BOD_USUARIOS A INNER JOIN BOD_LOAD_USR_PERFIL B 
                    ON (A.USU_ID = B.USU_ID) 
                WHERE A.USU_USUARIO = '" . $this->USU_USUARIO . "' AND 
                        A.USU_PASSWORD = '" . $this->USU_CLAVE . "' AND
                        A.USU_ESTADO = 1";

        $result = $this->db->loadObject();

        return $result;
    }

    /**
     * 19.12.2013
     * METODO QUE RETORNA TODOS LOS DATOS DE USUARIO
     * ASOCIADOS A UN ID DE USUARIO REGISTRADO EN EL SISTEMA
     * @param type $id
     * @return DATOS
     */
    function loadById($id) {

        $this->db = DB::getInstance();
        $this->USU_ID = $id;

        $this->db->sql = "SELECT * FROM BOD_USUARIOS WHERE USU_ID = '" . $this->USU_ID . "'";

        $result = $this->db->loadObject();

        return $result;
    }

    /**
     * 02.01.2014
     * METODO QUE RETORNA EL LISTADO DE MENUS ASOCIADOS A ROL
     * DE USUARIO REGISTRADO EN EL SISTEMA
     * @param type $id_usr
     * @return $html
     */
    function getMenu($id_usr) {

        $this->db = DB::getInstance();
        $this->USU_ID = $id_usr;

        $this->db->sql = "SELECT A.FUN_ID, 
                         A.PER_ID, 
                         A.FUN_NOMBRE, 
                         A.FUN_URL, 
                         A.FUN_ESTADO 
                 FROM BOD_FUNCION A INNER JOIN BOD_LOAD_USR_PERFIL B 
                     ON (A.PER_ID = B.PER_ID) 
                 WHERE B.USU_ID =  '" . $this->USU_ID . "' AND FUN_ESTADO = 1";


        $result = $this->db->loadObjectList();

        if ($this->USU_ID > 0) {
            $html .= "<div align='center'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src='../../views/layout/img/icons/User.gif' alt='Usuario' border='0'  align='absmiddle'/>&nbsp;" . $_SESSION['NOMBRE'] . "";
            $html .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"../../views/layout/index.php\"><span><img src='../../views/layout/img/icons/Home.gif' alt='Inicio' border='0' align='absmiddle'/> Inicio</span></a>";
            $html .= "&nbsp;&nbsp;&nbsp;<a href=\"../../views/usuarios/login.php\"><span><img src='../../views/layout/img/icons/Standby.gif' alt='Cerrar Sesi&oacute;n' border='0' align='absmiddle'/> Cerrar Sesi&oacute;n</span></a></div>";


            foreach ($result as $menu) {
                $html .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp<label><a href=" . $menu['FUN_URL'] . ">" . $menu['FUN_NOMBRE'] . "</a></table>";
            }
        }

        return $html;
    }

    /**
     * 19.12.2013
     * METODO QUE RETORNA EL LISTADO DE USUARIOS REGISTRADOS EN EL SISTEMA
     * @return $lst_usr
     */
    function listarUsuarios() {

        $this->db = DB::getInstance();

        $this->db->sql = "SELECT USU_ID, 
                            USU_RUT,
                            USU_DV,
                            USU_USUARIO,
                            USU_NOMBRES,
                            USU_AP_PATERNO,
                            USU_AP_MATERNO,
                            USU_ESTADO
                    FROM BOD_USUARIOS";

        $result = $this->db->loadObjectList();

        return $result;
    }

    /**
     * DAVID VALLEJOS A - 04.01.2013
     * METODO QUE REALIZA INSERT DE NUEVO
     * USUARIO DE SISTEMA EN EL SISTEMA
     * O REALIZA UPDATE DE USUARIO 
     * EXISTENTE
     */
    function save() {

        //reemplazar por esta query
        /*
          INSERT INTO BOD_USUARIOS (USU_ID,
          EMP_ID,
          USU_USUARIO,
          USU_PASSWORD,
          USU_RUT,
          USU_DV,
          USU_NOMBRES,
          USU_AP_PATERNO,
          USU_AP_MATERNO,
          USU_REGION,
          USU_PROVINCIA,
          USU_COMUNA,
          USU_DIRECCION,
          USU_TELEFONO,
          USU_EMAIL,
          USU_FECHA_CREACION,
          USU_USR_CREACION,
          USU_FECHA_MODIFICACION,
          USU_USR_MODIFICACION,
          USU_ESTADO)
          VALUES();
         *          */

        $this->db->sql = "INSERT INTO BOD_USUARIOS
                                (USU_ID,
                                EMP_ID,
                                USU_USUARIO,
                                USU_PASSWORD,
                                USU_RUT,
                                USU_DV,
                                USU_NOMBRES,
                                USU_AP_PATERNO,
                                USU_AP_MATERNO,
                                USU_REGION,
                                USU_PROVINCIA,
                                USU_COMUNA,
                                USU_DIRECCION,
                                USU_TELEFONO,
                                USU_EMAIL,
                                USU_FECHA_CREACION,
                                USU_USR_CREACION,
                                USU_FECHA_MODIFICACION,
                                USU_USR_MODIFICACION,
                                USU_ESTADO)
                        VALUES (" . $this->USU_ID . ",
                                " . $this->EMP_ID . ",
                                " . $this->USU_USUARIO . ",
                                " . $this->USU_PASSWORD . ",
                                " . $this->USU_RUT . ",
                                " . $this->USU_DV . ",
                                " . $this->USU_NOMBRES . ",
                                " . $this->USU_AP_PATERNO . ",
                                " . $this->USU_AP_MATERNO . ",
                                " . $this->USU_REGION . ",
                                " . $this->USU_PROVINCIA . ",
                                " . $this->USU_COMUNA . ",
                                " . $this->USU_DIRECCION . ",
                                " . $this->USU_TELEFONO . ",
                                " . $this->USU_EMAIL . ",
                                SYSDATE(),
                                " . $this->USU_ID . ",
                                ,
                                ,
                                1)";

        /*

          if ($this->USU_ID_USUARIO < 1) {

          $this->db->binds = array(':P_USU_ID_USUARIO' => $this->USU_ID_USUARIO,
          ':P_USU_PER_ID' => $this->USU_PER_ID,
          ':P_USU_USUARIO' => $this->USU_USUARIO,
          ':P_USU_CLAVE' => $this->USU_CLAVE,
          ':P_USU_RUT' => $this->USU_RUT,
          ':P_USU_DV' => $this->USU_DV,
          ':P_USU_NOMBRES' => $this->USU_NOMBRES,
          ':P_USU_AP_PATERNO' => $this->USU_AP_PATERNO,
          ':P_USU_AP_MATERNO' => $this->USU_AP_MATERNO,
          ':P_USU_ID_REGION' => $this->USU_ID_REGION,
          ':P_USU_ID_PROVINCIA' => $this->USU_ID_PROVINCIA,
          ':P_USU_ID_COMUNA' => $this->USU_ID_COMUNA,
          ':P_USU_FONO' => $this->USU_FONO,
          ':P_USU_EMAIL' => $this->USU_EMAIL,
          ':P_USU_USR_CREACION' => $_SESSION['USU_ID_USUARIO'],
          ':P_USU_USR_MODIFICACION' => " ");
          } else {
          $this->db->binds = array(':P_USU_ID_USUARIO' => $this->USU_ID_USUARIO,
          ':P_USU_PER_ID' => $this->USU_PER_ID,
          ':P_USU_USUARIO' => $this->USU_USUARIO,
          ':P_USU_CLAVE' => $this->USU_CLAVE,
          ':P_USU_RUT' => $this->USU_RUT,
          ':P_USU_DV' => $this->USU_DV,
          ':P_USU_NOMBRES' => $this->USU_NOMBRES,
          ':P_USU_AP_PATERNO' => $this->USU_AP_PATERNO,
          ':P_USU_AP_MATERNO' => $this->USU_AP_MATERNO,
          ':P_USU_ID_REGION' => $this->USU_ID_REGION,
          ':P_USU_ID_PROVINCIA' => $this->USU_ID_PROVINCIA,
          ':P_USU_ID_COMUNA' => $this->USU_ID_COMUNA,
          ':P_USU_FONO' => $this->USU_FONO,
          ':P_USU_EMAIL' => $this->USU_EMAIL,
          ':P_USU_USR_CREACION' => " ",
          ':P_USU_USR_MODIFICACION' => $_SESSION['USU_ID_USUARIO']);
          }

          $this->db->sql_sp = "call USP_GRABAR_USUARIOS(':P_USU_ID_USUARIO',
          ':P_USU_PER_ID',
          ':P_USU_USUARIO',
          ':P_USU_CLAVE',
          ':P_USU_RUT',
          ':P_USU_DV',
          ':P_USU_NOMBRES',
          ':P_USU_AP_PATERNO',
          ':P_USU_AP_MATERNO',
          ':P_USU_ID_REGION',
          ':P_USU_ID_PROVINCIA',
          ':P_USU_ID_COMUNA',
          ':P_USU_FONO',
          ':P_USU_EMAIL',
          ':P_USU_ESTADO',
          ':P_USU_USR_CREACION',
          ':P_USU_USR_MODIFICACION')";

          if ($this->db->alter()) {
          return $this->USU_ID_USUARIO;
          } else {
          return 0;
          }
         * 
         */
    }

    /**
     * 03.01.2014
     * METODO QUE ACTIVA O DESACTIVA
     * UNA CUENTA DE USUARIO EN EL
     * SISTEMA
     * @param type $id
     * @param type $estado
     * @return int
     */
    function desactivar($id, $estado) {

        $this->db = DB::getInstance();
        $this->USU_ESTADO = $estado;
        $this->USU_ID = $id;

        $this->db->sql = "UPDATE BOD_USUARIOS
                         SET USU_ESTADO = " . $this->USU_ESTADO . "
                        where USU_ID =" . $this->USU_ID;

        if ($this->db->alter($this->db->sql)) {
            return 1;
        } else {
            $this->error = $db->error;
            return -1;
        }
    }

    function existe($usuario, $clave) {

        /*
          $this->db->binds = array(':usuario' => $usuario, ':clave' => $clave);

          $this->db->sql = "select COUNT(1) AS EXISTE from ADMIN_USUARIO where ACTIVO='S' AND USUARIO = :usuario AND CLAVE = :clave";
          if ($persona = $this->db->loadObject()) {
          return $persona->EXISTE;
          } else {
          sleep(1);
          return null;
          }
         * 
         */
    }
}
?>